// 初始化的Promise

// 维护三种状态
const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';

class MyPromise {


  // executor 执行器函数，参数为resolve函数，reject函数
  constructor(executor) { //executor立即执行
    executor(this.resolve, this.reject);
  }

  status = PENDING;// 默认状态
  // 直接调用一个函数(不使用点调用)，那么该函数中的this指向window或undefiend
  // 注意：函数作为类的属性，通常使用箭头函数,这样，直接调用函数时(不使用点调用)，该函数中的this就始终指向该对象的实例
  resolve = () => {
    // 保证状态只能被修改一次
    if (this.status !== PENDING) {
      return;
    }
    this.status = FULFILLED;
  };
  reject = () => {
    // 保证状态只能被修改一次
    if (this.status !== PENDING) {
      return;
    }
    this.status = REJECTED;
  }

}